module.exports = Behavior({
  observers: {
    'value,columnsCurrent': function (value, col) {
      const d = {};

      /** 给text赋值，并记录当前值的序号 */
      if (value && col && col.length > 0) {
        const idx = col.findIndex(i => i.value === value);
        if (idx > -1) {
          d.text = col[idx].text;
          d.defaultIndex = idx;
        }
        else {
          d.text = '';
        }
      } else {
        d.text = '';
      }

      this.setData(d);
    },
    'columns': function (c) {
      const {
        defaultIndex,
        columnsFromConfig,
        columnsCurrent,
        value,
      } = this.data, d = {};

      // 来自后端配置的选项，具有优先权
      if (columnsFromConfig && columnsFromConfig.length > 0) {
        d.columnsCurrent = [...columnsFromConfig];
      } else if (Array.isArray(c)) {
        d.columnsCurrent = [...c];
      }

      // 只要columns改变，且当前值不在选项中，就清空之前选中的值
      if (defaultIndex > -1 && JSON.stringify(columnsCurrent) !== JSON.stringify(c) && !c.find(i => (i.value == value && i.disabled !== true))) {
        d.text = '';
        d.value = null;
      }

      this.setData(d);
    },
  },
})